package net.xiduth.algorithms;

/**
 * @author Bart
 * 
 * @version 1.0
 * 
 * @since 19-6-2013
 */
interface BlockCipher {

	/**
	 * The block sizes parent multiple
	 */
	public int MASK = 16;

	/**
	 * Sets this cipher encryption and decryption key
	 * 
	 * @param key
	 *            - the ciphers key
	 */
	public void init(byte[] key);

	/**
	 * Encrypts a series of data in bytes
	 * 
	 * @param bytes
	 *            - the data to encrypt
	 * @param offset
	 *            - the offset of the byte array
	 * @param len
	 *            - the end of the encryption
	 */
	public void encrypt(byte[] bytes, int offset, int len);

	/**
	 * Decrypts a series of data in bytes
	 * 
	 * @param bytes
	 *            - the data to decrypt
	 * @param offset
	 *            - the offset of the byte array
	 * @param len
	 *            - the end of the decryption
	 */
	public void decrypt(byte[] bytes, int offset, int len);

}
